package com.schrodinger.zwebservice.axis2.client.wscaller;

import org.apache.axis2.AxisFault;

/**
 * WebService调用器接口，其实现类必须实现其产生调用器的方法
 * @author chenchen
 *
 */
public interface IWSInvoker {
	
	/**调用有返回值的WebService方法，当方法没有参数时不能传入null，而需要传入new Object[]{};
	 * 
	 * @param classNameWithPackage 要调用的类的全路径，如:com.toone.oa.UserInterface
	 * @param args 要调用的方法的参数数据，如：new Object[]{"测试", 1, "数据"};
	 * @param returnValueClass 返回值的类型：如：new Class[] {String.class};
	 * @return 返回的数据（对象）
	 * @throws AxisFault 
	 */
	public Object invokerMethodHasReturn(String classNameWithPackage, String methodName, Object[] args, Class[] returnValueClass) throws AxisFault;
	
	/**
	 * 调用有返回值的WebService方法，当方法没有参数时不能传入null，而需要传入new Object[]{};
	 * 
	 * @param targetNameSpace 生成wsdl的targetNameSpace
	 * @param args 要调用的方法的参数数据，如：new Object[]{"测试", 1, "数据"};
	 * @param returnValueClass 返回值的类型：如：new Class[] {String.class};
	 * @return 返回的数据（对象）
	 * @throws AxisFault 
	 */
	public Object invokeMethodHasReturn(String targetNameSpace, String methodName, Object[] args, Class[] returnValueClass) throws AxisFault;
	
	/**调用没有返回值的WebService方法，当方法没有参数时不能传入null，而需要传入new Object[]{};
	 * 
	 * @param classNameWithPackage classNameWithPackage 要调用的类的全路径，如:com.toone.oa.UserInterface
	 * @param args 要调用的方法的参数数据，如：new Object[]{"测试", 1, "数据"};
	 * @throws AxisFault 
	 */
	public void invokerMethodNoReturn(String classNameWithPackage, String methodName, Object[] args) throws AxisFault;
	
	/**调用没有返回值的WebService方法，当方法没有参数时不能传入null，而需要传入new Object[]{};
	 * 
	 * @param targetNameSpace 生成wsdl的targetNameSpace
	 * @param args 要调用的方法的参数数据，如：new Object[]{"测试", 1, "数据"};
	 * @throws AxisFault 
	 */
	public void invokeMethodNoReturn(String targetNameSpace, String methodName, Object[] args) throws AxisFault;
}